import axios from 'axios';

// API基础URL
const API_BASE_URL = process.env.REACT_APP_API_URL || 'http://localhost:3000/api';

/**
 * 获取用户星球数据
 * @param {string} userId - 用户ID
 * @param {string} token - 用户认证令牌
 * @returns {Promise} - 返回API响应
 */
export const getUserPlanetData = async (userId, token) => {
  try {
    const response = await axios.get(`${API_BASE_URL}/planets/${userId}`, {
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
      }
    });
    
    return response.data;
  } catch (error) {
    console.error('获取星球数据失败:', error);
    throw error;
  }
};

/**
 * 更新用户星球数据
 * @param {string} userId - 用户ID
 * @param {Object} planetData - 星球数据
 * @param {string} token - 用户认证令牌
 * @returns {Promise} - 返回API响应
 */
export const updateUserPlanetData = async (userId, planetData, token) => {
  try {
    const response = await axios.put(`${API_BASE_URL}/planets/${userId}`, planetData, {
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
      }
    });
    
    return response.data;
  } catch (error) {
    console.error('更新星球数据失败:', error);
    throw error;
  }
};

/**
 * 创建新的星球数据记录
 * @param {Object} planetData - 星球数据
 * @param {string} token - 用户认证令牌
 * @returns {Promise} - 返回API响应
 */
export const createPlanetData = async (planetData, token) => {
  try {
    const response = await axios.post(`${API_BASE_URL}/planets`, planetData, {
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
      }
    });
    
    return response.data;
  } catch (error) {
    console.error('创建星球数据失败:', error);
    throw error;
  }
};

/**
 * 获取所有用户的星球统计数据（管理员接口）
 * @param {string} token - 管理员认证令牌
 * @returns {Promise} - 返回API响应
 */
export const getPlanetsStatistics = async (token) => {
  try {
    const response = await axios.get(`${API_BASE_URL}/planets/statistics`, {
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
      }
    });
    
    return response.data;
  } catch (error) {
    console.error('获取星球统计数据失败:', error);
    throw error;
  }
}; 